package org.jypj.dev.service.impl;


import org.jypj.dev.dao.EmergeBookDao;
import org.jypj.dev.model.EmergeBook;
import org.jypj.dev.service.EmergeBookService;
import org.jypj.dev.util.Page;
import org.jypj.dev.util.StringUtil;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.UUID;

@Service("emergeBookService")
public class EmergeBookServiceImpl implements EmergeBookService {

    @Resource
    private EmergeBookDao emergeBookDao;

    /**
     * 保存
     * 所有字段全都保存
     *
     * @param emergeBook
     * @return 保存后的对象包括ID
     */
    public int saveEmergeBook(EmergeBook emergeBook) {
        //生成一个ID
        String id = emergeBook.getParentId();
        String maxId = emergeBookDao.selectMaxChildId(emergeBook.getParentId());
        if (StringUtil.isEmpty(maxId)) {
            maxId = "0";
        }
        String newId = Integer.parseInt(maxId) + 1 + "";
        if (newId.length() == 1) {
            newId = "0" + newId;
        }
        id += newId;
        emergeBook.setId(id);
        emergeBook.setSortOrder(id);
        return emergeBookDao.saveEmergeBook(emergeBook);
    }

    /**
     * 根据ID删除
     *
     * @param id 主键ID
     * @return 删除记录数
     */
    public int deleteEmergeBookById(String id) {

        return emergeBookDao.deleteEmergeBookById(id);
    }

    /**
     * 根据对象删除
     *
     * @param emergeBook
     * @return
     */
    public int deleteEmergeBookByObject(EmergeBook emergeBook) {

        return emergeBookDao.deleteEmergeBookByObject(emergeBook);
    }

    /**
     * 更新
     * 更新所有字段
     *
     * @param emergeBook
     * @return 保存后的对象包括ID
     */
    public int updateEmergeBook(EmergeBook emergeBook) {

        return emergeBookDao.updateEmergeBook(emergeBook);
    }

    @Override
    public int moveEmergeBook(String id1, String id2) {
        EmergeBook emergeBook1 = emergeBookDao.selectEmergeBookById(id1);
        EmergeBook emergeBook2 = emergeBookDao.selectEmergeBookById(id2);
        emergeBookDao.updateSortOrder(id1, emergeBook2.getSortOrder());
        emergeBookDao.updateSortOrder(id2, emergeBook1.getSortOrder());
        return 0;
    }

    /**
     * 按ID查询
     *
     * @return EmergeBook
     * @parm id 主键ID
     */
    public EmergeBook selectEmergeBookById(String id) {

        return emergeBookDao.selectEmergeBookById(id);
    }

    /**
     * 分页查询 包含条件
     *
     * @param page 分页对象
     * @param map  查询条件
     * @return List<EmergeBook>
     */
    public Page selectOnePageByMap(Page page, Map<String, Object> map) {
        List<EmergeBook> emergeBooks = emergeBookDao.selectOnePageByMap(page, map);
        if (emergeBooks != null && emergeBooks.size() > 0) {
            page.setResult(emergeBooks);
        } else {
            page.setResult(new ArrayList<EmergeBook>());
        }
        return page;
    }

    /**
     * 分页查询 包含对象条件
     *
     * @param page       分页对象
     * @param emergeBook 查询条件
     * @return Page
     */
    public Page selectOnePageByEmergeBook(Page page, EmergeBook emergeBook) {
        List<EmergeBook> emergeBooks = emergeBookDao.selectOnePageByEmergeBook(page, emergeBook);
        if (emergeBooks != null && emergeBooks.size() > 0) {
            page.setResult(emergeBooks);
        } else {
            page.setResult(new ArrayList<EmergeBook>());
        }
        return page;
    }

    /**
     * 按条件查询全部的
     *
     * @param map 查询条件
     * @return List<EmergeBook>
     */
    public List<EmergeBook> selectAllByMap(Map<String, Object> map) {
        return emergeBookDao.selectAllByMap(map);
    }


    /**
     * 按条件查询全部的
     *
     * @param emergeBook 查询条件
     * @return List<EmergeBook>
     */
    public List<EmergeBook> selectAllByEmergeBook(EmergeBook emergeBook) {

        return emergeBookDao.selectAllByEmergeBook(emergeBook);
    }

    /**
     * 按条件查询单个对象
     *
     * @param map 查询条件
     * @return EmergeBook
     */
    public EmergeBook selectObjectByMap(Map<String, Object> map) {

        return emergeBookDao.selectObjectByMap(map);
    }

    /**
     * 按条件查询单个对象
     *
     * @param emergeBook 查询条件
     * @return EmergeBook
     */
    public EmergeBook selectObjectByEmergeBook(EmergeBook emergeBook) {

        return emergeBookDao.selectObjectByEmergeBook(emergeBook);
    }
}